﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Librerias;
using System.Data;
using System.Collections.Specialized;
using System.Collections;

namespace eCampusWeb
{
    public partial class Usuario : System.Web.UI.Page
    {
        string usuarioDelMuro="";

        protected void Page_Load(object sender, EventArgs e)
        {
            usuarioDelMuro = Request.QueryString["usuario"];

            //Si no se especifica el usuario del muro, se va al usuario de la sesión. Si no está logeado se va a la página de inicio
            if (usuarioDelMuro == null || usuarioDelMuro == "")
            {
                if (Session["correo"] == null || Session["correo"].ToString() == "")
                {
                    Response.Redirect("~/Default.aspx");
                }
                else usuarioDelMuro = Session["correo"].ToString();
            }

            if (!IsPostBack)
            {
                //Activa opción enviar mensaje
                HyperLink1.NavigateUrl = "~/MensajeCrear.aspx?c=" + usuarioDelMuro;

                //Carga asignaturas en comun
                ListView1.DataSource = new Librerias.ENUsuario().AsignaturasComunes(usuarioDelMuro, Session["correo"].ToString());
                ListView1.DataBind();
                

                //Carga datos de usuario
                DataTable tabla = new ENUsuario().dimeUsuarioSegunCorreo(usuarioDelMuro);
                if (tabla.Rows.Count > 0)
                {
                    lbTitulo.Text = "Muro de " + tabla.Rows[0]["usuNombre"].ToString() + " " + tabla.Rows[0]["usuApellido1"].ToString() + " " + tabla.Rows[0]["usuApellido2"].ToString();
                    lbSubtitulo.Text = (tabla.Rows[0]["usuTipo"].ToString() == "1" ? "Profesor" : "Alumno");
                    Image7.ImageUrl = "~" + tabla.Rows[0]["usuImagen"].ToString();
                }

                //Si el usuario no está registrado unicamente puede acceder al muro de un profesor
                espaciador.Visible = false;
                if (Session["correo"] == null || Session["correo"].ToString() == "")
                {
                    if (tabla.Rows[0]["usuTipo"].ToString() != "1")
                    {
                        Response.Redirect("~/401.aspx");
                    }
                    else
                    {
                        DivCom.Visible = false;
                        HyperLink1.Visible = false;
                        espaciador.Visible = true;
                        lbAsigs.Visible = false;
                        ListView1.Visible = false;
                    }
                }

                //Carga muro
                ListView2.DataSource = new Librerias.EN.ENMuro().GetMuro(usuarioDelMuro);
                ListView2.DataBind();
            }
            else
            {
                //Borrar entrada
                if (Request.Form["__EVENTTARGET"] != null &&
                    Request.Form["__EVENTTARGET"] == "BORRAR")
                {
                    Borrar(Request.Form["__EVENTARGUMENT"]);
                }
                
                lbError.Text = "";
            }
        }

        public void Comentar(object sender, EventArgs e)
        {
            try
            {
                Librerias.EN.ENMuro en = new Librerias.EN.ENMuro();

                en.AddEntrada(Session["correo"].ToString(), usuarioDelMuro, TextBox1.Text);

                ListView2.DataSource = en.GetMuro(usuarioDelMuro);
                ListView2.DataBind();

                TextBox1.Text = "";
            }
            catch
            {
                lbError.Text = "No se pudo crear el mensaje";
            }
        }

        public void MasUno(object sender, EventArgs e)
        {
            try
            {
                string id = ((ImageButton)sender).CommandArgument;

                new Librerias.EN.ENPuntos().MasUno("M"+ id, Session["correo"].ToString());

                Response.Redirect("~/Muro.aspx?usuario="+HttpUtility.HtmlEncode(usuarioDelMuro));
            }
            catch (Exception)
            {
                lbError.Text = "ERROR: No puedes votar dos veces el mismo comentario. ";
            }
        }
        
        public void MenosUno(object sender, EventArgs e)
        {
            try
            {
                string id = ((ImageButton)sender).CommandArgument;

                new Librerias.EN.ENPuntos().MenosUno("M"+ id, Session["correo"].ToString());


                Response.Redirect("~/Muro.aspx?usuario=" + HttpUtility.HtmlEncode(usuarioDelMuro));
            }
            catch (Exception)
            {
                lbError.Text = "ERROR: No puedes votar dos veces el mismo comentario. ";
            }
        }


        public void Borrar(string id)
        {
            new Librerias.EN.ENMuro().DeleteEntrada(id,Session["correo"].ToString());
            Response.Redirect("~/Muro.aspx?usuario=" + HttpUtility.HtmlEncode(usuarioDelMuro));
        }


    }
}